package wazenieciezkoscisrodkacyfry;

import org.apache.log4j.Logger;
import org.apache.log4j.varia.NullAppender;

import typydanych.Obrazek;

public class WazenieCiezkosciSrodkaCyfry {
	public static Logger LOG = Logger.getLogger(WazenieCiezkosciSrodkaCyfry.class);
	static {
		LOG.addAppender(new NullAppender());
	}
	private Obrazek obrazek;
	private int prog = 60;
	private int indeksPoczatkuSrodka;
	private int indeksKoncaSrodka;
	private float progStosunku = 0.5f;
	
	public int zwazCiezkoscSrodka(Obrazek obrazek){
		this.obrazek = obrazek;
		wyznaczPoczatekIKoniecSrodka();
		int wszystkiePikseleRozneOdTla = 0;
		int pikseleWSrodkuRozneOdTla = 0;
		for(int y = obrazek.getObszarCyfry().getGora(); y <= obrazek.getObszarCyfry().getDol(); y++){
			for(int x= 0; x<Obrazek.ROZMIAR; x++){
				if(obrazek.czyNieTlo(x, y, prog)){
					wszystkiePikseleRozneOdTla++;
					if(y >= indeksPoczatkuSrodka && y <= indeksKoncaSrodka){
						pikseleWSrodkuRozneOdTla++;
					}
				}
			}
		}
		
		float stosunekSrodkaDoCalosci = (float)pikseleWSrodkuRozneOdTla/(float)wszystkiePikseleRozneOdTla;
		LOG.info("Stosunek = "+stosunekSrodkaDoCalosci);
		if(stosunekSrodkaDoCalosci < progStosunku){
			return 1;
		}
		return 2;
	}
	
	private void wyznaczPoczatekIKoniecSrodka(){
		int rozmiarPasa = Math.round(obrazek.getObszarCyfry().getWielkoscObszaru() / 4.0f);
		indeksPoczatkuSrodka = obrazek.getObszarCyfry().getGora() + rozmiarPasa;
		indeksKoncaSrodka = obrazek.getObszarCyfry().getDol() - rozmiarPasa;
	}
	
}
